{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "import keras\n",
    "import math\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import os\n",
    "import sklearn\n",
    "import sklearn.metrics as skm\n",
    "import sys\n",
    "sys.path.append(\"../../../ecg\")\n",
    "\n",
    "import load\n",
    "import util\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 328/328 [00:11<00:00, 29.52it/s] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "328/328 [==============================] - 8s 25ms/step\n"
     ]
    }
   ],
   "source": [
    "model_path = \"/deep/group/awni/ecg_models/default/irhythm_best/0.341-0.881-013-0.241-0.911.hdf5\"\n",
    "data_json = \"../test.json\"\n",
    "\n",
    "preproc = util.load(os.path.dirname(model_path))\n",
    "dataset = load.load_dataset(data_json)\n",
    "ecgs, committee_labels = preproc.process(*dataset)\n",
    "\n",
    "revs = []\n",
    "for i in range(6):\n",
    "    with open(\"../test_rev{}.json\".format(i), 'r') as fid:\n",
    "        revs.append([json.loads(l)['labels'] for l in fid])\n",
    "revs = [preproc.process_y(r) for r in revs]\n",
    "model = keras.models.load_model(model_path)\n",
    "probs = model.predict(ecgs, verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def stats(ground_truth, preds):\n",
    "    labels = range(ground_truth.shape[2])\n",
    "    g = np.argmax(ground_truth, axis=2).ravel()\n",
    "    p = np.argmax(preds, axis=2).ravel()\n",
    "    stat_dict = {}\n",
    "    for i in labels:\n",
    "        # compute all the stats for each label\n",
    "        tp = np.sum(g[g==i] == p[g==i])\n",
    "        fp = np.sum(g[p==i] != p[p==i])\n",
    "        fn = np.sum(g==i) - tp\n",
    "        tn = np.sum(g!=i) - fp\n",
    "        stat_dict[i] = (tp, fp, fn, tn)\n",
    "    return stat_dict\n",
    "\n",
    "def to_set(preds):\n",
    "    idxs = np.argmax(preds, axis=2)\n",
    "    return [list(set(r)) for r in idxs]\n",
    "\n",
    "def set_stats(ground_truth, preds):\n",
    "    labels = range(ground_truth.shape[2])\n",
    "    ground_truth = to_set(ground_truth)\n",
    "    preds = to_set(preds)\n",
    "    stat_dict = {}\n",
    "    for x in labels:\n",
    "        tp = 0; fp = 0; fn = 0; tn = 0;\n",
    "        for g, p in zip(ground_truth, preds):\n",
    "            if x in g and x in p: # tp\n",
    "                tp += 1\n",
    "            if x not in g and x in p: # fp\n",
    "                fp += 1\n",
    "            if x in g and x not in p:\n",
    "                fn += 1\n",
    "            if x not in g and x not in p:\n",
    "                tn += 1\n",
    "        stat_dict[x] = (tp, fp, fn, tn)\n",
    "    return stat_dict\n",
    "\n",
    "def binarized_helper(p, g):\n",
    "    # compute all the stats for each label\n",
    "    tp = np.sum(p[g==1] == g[g==1])\n",
    "    fp = np.sum(p[p==1] != g[p==1])\n",
    "    fn = np.sum(g) - tp\n",
    "    tn = np.sum(g==0) - fp\n",
    "    return (tp, fp, fn, tn)\n",
    "\n",
    "def binarized_stats(ground_truth, probs, thresh=0.5):\n",
    "    labels = range(ground_truth.shape[2])\n",
    "    stat_dict = {}\n",
    "    for i in labels:\n",
    "        g = ground_truth[..., i].ravel()\n",
    "        p = (probs[..., i] > thresh).ravel()\n",
    "        stat_dict[i] = binarized_helper(p, g)\n",
    "    return stat_dict\n",
    "\n",
    "# Compute sensitivity at given specificity\n",
    "def binarized_stats_at_spec(ground_truth, probs, specs):\n",
    "    stat_dict = {}\n",
    "    for i, min_spec in enumerate(specs):\n",
    "        g = ground_truth[..., i].ravel()\n",
    "\n",
    "        ranges = [0, 1]\n",
    "        thresh = 0.5\n",
    "\n",
    "        for _ in range(1000):\n",
    "            p = (probs[..., i] > thresh).ravel()\n",
    "            tp, fp, fn, tn = binarized_helper(p, g)            \n",
    "            spec = tn / float(tn + fp)\n",
    "            if spec >= min_spec:\n",
    "                ranges[1] = thresh\n",
    "                thresh = (thresh + ranges[0]) / 2.0\n",
    "            if spec < min_spec:\n",
    "                ranges[0] = thresh\n",
    "                thresh = (ranges[1] + thresh) / 2.0\n",
    "        stat_dict[i] = (tp, fp, fn, tn)\n",
    "    return stat_dict\n",
    "\n",
    "# Compute specificity at given sensitivity\n",
    "def binarized_stats_at_sens(ground_truth, probs, senses):\n",
    "    stat_dict = {}\n",
    "    for i, min_sens in enumerate(senses):\n",
    "        #g = np.any(ground_truth[..., i], axis=1).ravel()\n",
    "        g = ground_truth[..., i].ravel()\n",
    "\n",
    "        ranges = [0, 1]\n",
    "        thresh = 0.5\n",
    "\n",
    "        for _ in range(1000):\n",
    "            #p = np.any(probs[..., i] > thresh, axis=1).ravel()\n",
    "            p = (probs[..., i] > thresh).ravel()\n",
    "            tp, fp, fn, tn = binarized_helper(p, g)            \n",
    "            sens = tp / float(tp + fn)\n",
    "            if sens < min_sens:\n",
    "                ranges[1] = thresh\n",
    "                thresh = (thresh + ranges[0]) / 2.0\n",
    "            if sens > min_sens:\n",
    "                ranges[0] = thresh\n",
    "                thresh = (ranges[1] + thresh) / 2.0\n",
    "        stat_dict[i] = (tp, fp, fn, tn)\n",
    "    return stat_dict\n",
    "\n",
    "def print_results(sd):\n",
    "    print \"\\t\\tPrecision  Recall     Specificity     NPV        F1\"\n",
    "    tf1 = 0; tot = 0\n",
    "    for k, v in sd.items():\n",
    "        tp, fp, fn, tn = v\n",
    "        precision = tp / float(tp + fp)\n",
    "        recall = tp / float(tp + fn)\n",
    "        specificity = tn / float(tn + fp)\n",
    "        npv = tn / float(tn + fn)\n",
    "        f1 = 2 * precision * recall / (precision + recall)\n",
    "        tf1 += (tp + fn) * f1\n",
    "        tot += (tp + fn)\n",
    "        print \"{:>10} {:10.3f} {:10.3f} {:10.3f} {:15.3f} {:10.3f}\".format(\n",
    "            preproc.classes[k], precision, recall, specificity, npv, f1)\n",
    "    print \"Average F1 {:.3f}\".format(tf1 / float(tot))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Sequence level results for the Model and the Cardiologists"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.782      0.827      0.965           0.973      0.804\n",
      "       AVB      0.810      0.865      0.976           0.984      0.837\n",
      "  BIGEMINY      0.902      0.856      0.997           0.996      0.879\n",
      "       EAR      0.566      0.484      0.987           0.982      0.522\n",
      "       IVR      0.843      0.718      0.996           0.993      0.776\n",
      "JUNCTIONAL      0.877      0.518      0.994           0.963      0.651\n",
      "     NOISE      0.953      0.770      0.997           0.980      0.852\n",
      "     SINUS      0.851      0.934      0.893           0.953      0.891\n",
      "       SVT      0.563      0.406      0.987           0.975      0.472\n",
      " TRIGEMINY      0.858      0.961      0.995           0.999      0.907\n",
      "        VT      0.380      0.872      0.991           0.999      0.529\n",
      "WENCKEBACH      0.690      0.715      0.984           0.986      0.703\n",
      "Average F1 0.809\n"
     ]
    }
   ],
   "source": [
    "print \"Model\"\n",
    "print_results(stats(committee_labels, probs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cardiologist\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.647      0.710      0.941           0.955      0.677\n",
      "       AVB      0.818      0.731      0.981           0.969      0.772\n",
      "  BIGEMINY      0.856      0.829      0.996           0.995      0.842\n",
      "       EAR      0.659      0.380      0.993           0.979      0.482\n",
      "       IVR      0.654      0.611      0.991           0.990      0.632\n",
      "JUNCTIONAL      0.762      0.634      0.984           0.972      0.692\n",
      "     NOISE      0.788      0.749      0.983           0.978      0.768\n",
      "     SINUS      0.808      0.901      0.859           0.930      0.852\n",
      "       SVT      0.503      0.408      0.983           0.975      0.451\n",
      " TRIGEMINY      0.853      0.832      0.995           0.995      0.842\n",
      "        VT      0.500      0.652      0.996           0.998      0.566\n",
      "WENCKEBACH      0.651      0.541      0.986           0.978      0.591\n",
      "Average F1 0.753\n"
     ]
    }
   ],
   "source": [
    "print \"Cardiologist\"\n",
    "rev_labels = np.vstack(revs)\n",
    "rep_comm = np.vstack([committee_labels]*len(revs))\n",
    "cardiol_stats = stats(rep_comm, rev_labels)\n",
    "cardiol_specs = [tn / float(tn + fp)\n",
    "                 for k, (tp, fp, fn, tn) in cardiol_stats.items()]\n",
    "print_results(cardiol_stats)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Set level results for the Model and Cardiologists"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.814      0.814      0.959           0.959      0.814\n",
      "       AVB      0.755      0.833      0.954           0.971      0.792\n",
      "  BIGEMINY      0.833      0.909      0.987           0.993      0.870\n",
      "       EAR      0.542      0.591      0.964           0.970      0.565\n",
      "       IVR      0.848      0.824      0.983           0.980      0.836\n",
      "JUNCTIONAL      0.788      0.722      0.976           0.966      0.754\n",
      "     NOISE      0.897      0.650      0.990           0.953      0.754\n",
      "     SINUS      0.893      0.981      0.783           0.957      0.935\n",
      "       SVT      0.625      0.735      0.949           0.969      0.676\n",
      " TRIGEMINY      0.792      0.950      0.984           0.997      0.864\n",
      "        VT      0.485      0.941      0.945           0.997      0.640\n",
      "WENCKEBACH      0.800      0.828      0.980           0.983      0.814\n",
      "Average F1 0.831\n"
     ]
    }
   ],
   "source": [
    "print \"Model\"\n",
    "print_results(set_stats(committee_labels, probs))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cardiologist\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.664      0.709      0.921           0.935      0.686\n",
      "       AVB      0.783      0.740      0.965           0.956      0.761\n",
      "  BIGEMINY      0.899      0.811      0.993           0.986      0.853\n",
      "       EAR      0.670      0.447      0.984           0.961      0.536\n",
      "       IVR      0.789      0.662      0.980           0.962      0.720\n",
      "JUNCTIONAL      0.703      0.657      0.966           0.958      0.679\n",
      "     NOISE      0.710      0.662      0.962           0.954      0.685\n",
      "     SINUS      0.880      0.941      0.762           0.875      0.910\n",
      "       SVT      0.630      0.510      0.965           0.945      0.564\n",
      " TRIGEMINY      0.833      0.792      0.990           0.987      0.812\n",
      "        VT      0.755      0.784      0.986           0.988      0.769\n",
      "WENCKEBACH      0.818      0.672      0.986           0.969      0.738\n",
      "Average F1 0.780\n"
     ]
    }
   ],
   "source": [
    "print \"Cardiologist\"\n",
    "print_results(set_stats(rep_comm, rev_labels))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "### The \"Binarized\" Sensitivity and Specificity (Sequence Level)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.797      0.803      0.969           0.970      0.800\n",
      "       AVB      0.827      0.845      0.979           0.982      0.836\n",
      "  BIGEMINY      0.903      0.778      0.998           0.993      0.836\n",
      "       EAR      0.594      0.508      0.988           0.983      0.547\n",
      "       IVR      0.861      0.697      0.997           0.992      0.771\n",
      "JUNCTIONAL      0.895      0.496      0.995           0.962      0.639\n",
      "     NOISE      0.964      0.757      0.998           0.979      0.848\n",
      "     SINUS      0.860      0.932      0.900           0.953      0.895\n",
      "       SVT      0.626      0.403      0.990           0.975      0.490\n",
      " TRIGEMINY      0.861      0.961      0.995           0.999      0.908\n",
      "        VT      0.417      0.851      0.993           0.999      0.559\n",
      "WENCKEBACH      0.696      0.696      0.985           0.985      0.696\n",
      "Average F1 0.809\n"
     ]
    }
   ],
   "source": [
    "print_results(binarized_stats(committee_labels, probs, thresh=0.5))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Compute max sensitivity at given specificity and vice versa"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sensitivity at 0.9 specificity.\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.578      0.908      0.899           0.985      0.707\n",
      "       AVB      0.538      0.994      0.900           0.999      0.698\n",
      "  BIGEMINY      0.226      0.995      0.900           1.000      0.368\n",
      "       EAR      0.210      0.762      0.899           0.991      0.329\n",
      "       IVR      0.207      0.990      0.899           1.000      0.343\n",
      "JUNCTIONAL      0.438      0.995      0.899           1.000      0.608\n",
      "     NOISE      0.450      0.950      0.899           0.995      0.610\n",
      "     SINUS      0.859      0.932      0.899           0.952      0.894\n",
      "       SVT      0.290      0.964      0.900           0.998      0.446\n",
      " TRIGEMINY      0.239      0.996      0.899           1.000      0.386\n",
      "        VT      0.059      1.000      0.900           1.000      0.111\n",
      "WENCKEBACH      0.318      0.946      0.900           0.997      0.476\n",
      "Average F1 0.698\n",
      "Specificity at 0.9 sensitivity.\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.594      0.900      0.906           0.983      0.715\n",
      "       AVB      0.709      0.901      0.956           0.988      0.793\n",
      "  BIGEMINY      0.878      0.898      0.996           0.997      0.888\n",
      "       EAR      0.091      0.902      0.684           0.995      0.166\n",
      "       IVR      0.685      0.903      0.989           0.997      0.779\n",
      "JUNCTIONAL      0.611      0.898      0.955           0.992      0.728\n",
      "     NOISE      0.599      0.900      0.948           0.991      0.720\n",
      "     SINUS      0.918      0.899      0.947           0.935      0.909\n",
      "       SVT      0.340      0.903      0.926           0.996      0.494\n",
      " TRIGEMINY      0.959      0.897      0.999           0.997      0.927\n",
      "        VT      0.249      0.894      0.983           0.999      0.389\n",
      "WENCKEBACH      0.404      0.901      0.934           0.995      0.557\n",
      "Average F1 0.777\n",
      "Sensitivity at cardiologist specificity.\n",
      "\t\tPrecision  Recall     Specificity     NPV        F1\n",
      "        AF      0.690      0.861      0.941           0.978      0.766\n",
      "       AVB      0.840      0.858      0.981           0.983      0.849\n",
      "  BIGEMINY      0.865      0.921      0.996           0.998      0.892\n",
      "       EAR      0.695      0.445      0.993           0.981      0.543\n",
      "       IVR      0.725      0.867      0.991           0.996      0.790\n",
      "JUNCTIONAL      0.788      0.729      0.985           0.979      0.757\n",
      "     NOISE      0.799      0.803      0.983           0.983      0.801\n",
      "     SINUS      0.816      0.950      0.859           0.963      0.878\n",
      "       SVT      0.545      0.487      0.983           0.978      0.515\n",
      " TRIGEMINY      0.871      0.961      0.995           0.999      0.914\n",
      "        VT      0.516      0.702      0.996           0.998      0.595\n",
      "WENCKEBACH      0.692      0.651      0.986           0.983      0.671\n",
      "Average F1 0.807\n"
     ]
    }
   ],
   "source": [
    "print \"Sensitivity at 0.9 specificity.\"\n",
    "print_results(binarized_stats_at_spec(\n",
    "    committee_labels, probs, specs=[0.8995]*len(preproc.classes)))\n",
    "print \"Specificity at 0.9 sensitivity.\"\n",
    "print_results(binarized_stats_at_sens(\n",
    "    committee_labels, probs, senses=[0.8995]*len(preproc.classes)))\n",
    "print \"Sensitivity at cardiologist specificity.\"\n",
    "print_results(binarized_stats_at_spec(\n",
    "    committee_labels, probs, specs=cardiol_specs))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## AUC Scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def c_statistic_with_95p_confidence_interval(cstat, num_positives, num_negatives, z_alpha_2=1.96):\n",
    "    \"\"\"\n",
    "    Calculates the confidence interval of an ROC curve (c-statistic), using the method described\n",
    "    under \"Confidence Interval for AUC\" here:\n",
    "      https://ncss-wpengine.netdna-ssl.com/wp-content/themes/ncss/pdf/Procedures/PASS/Confidence_Intervals_for_the_Area_Under_an_ROC_Curve.pdf\n",
    "    Args:\n",
    "        cstat: the c-statistic (equivalent to area under the ROC curve)\n",
    "        num_positives: number of positive examples in the set.\n",
    "        num_negatives: number of negative examples in the set.\n",
    "        z_alpha_2 (optional): the critical value for an N% confidence interval, e.g., 1.96 for 95%,\n",
    "            2.326 for 98%, 2.576 for 99%, etc.\n",
    "    Returns:\n",
    "        The 95% confidence interval half-width, e.g., the Y in X ± Y.\n",
    "    \"\"\"\n",
    "    q1 = cstat / (2 - cstat)\n",
    "    q2 = 2 * cstat**2 / (1 + cstat)\n",
    "    numerator = cstat * (1 - cstat) \\\n",
    "        + (num_positives - 1) * (q1 - cstat**2) \\\n",
    "        + (num_negatives - 1) * (q2 - cstat**2)\n",
    "    standard_error_auc = math.sqrt(numerator / (num_positives * num_negatives))\n",
    "    return z_alpha_2 * standard_error_auc\n",
    "\n",
    "def roc_auc(ground_truth, probs, index):\n",
    "    gts = np.argmax(ground_truth, axis=2)\n",
    "    n_gts = np.zeros_like(gts)\n",
    "    n_gts[gts==index] = 1\n",
    "    n_pos = np.sum(n_gts == 1)\n",
    "    n_neg = n_gts.size - n_pos\n",
    "    n_ps = probs[..., index].squeeze()\n",
    "    n_gts, n_ps = n_gts.ravel(), n_ps.ravel()\n",
    "    return n_pos, n_neg, skm.roc_auc_score(n_gts, n_ps)\n",
    "\n",
    "def roc_auc_set(ground_truth, probs, index):\n",
    "    gts = np.argmax(ground_truth, axis=2)\n",
    "    max_ps = np.max(probs[...,index], axis=1)\n",
    "    max_gts = np.any(gts==index, axis=1)\n",
    "    pos = np.sum(max_gts)\n",
    "    neg = max_gts.size - pos\n",
    "    return pos, neg, skm.roc_auc_score(max_gts, max_ps)\n",
    "\n",
    "def print_aucs(auc_fn, ground_truth, probs):\n",
    "    macro_average = 0.0; total = 0.0\n",
    "    print \"\\t        AUC\"\n",
    "    for idx, cname in preproc.int_to_class.items():\n",
    "        pos, neg, auc = auc_fn(ground_truth, probs, idx)\n",
    "        total += pos\n",
    "        macro_average += pos * auc\n",
    "        conf = c_statistic_with_95p_confidence_interval(auc, pos, neg)\n",
    "        print \"{: <8}\\t{:.3f} ({:.3f}-{:.3f})\".format(cname, auc, auc-conf,auc+conf)\n",
    "    print \"Average\\t\\t{:.3f}\".format(macro_average / total)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sequence level AUC\n",
      "\t        AUC\n",
      "AF      \t0.973 (0.966-0.980)\n",
      "AVB     \t0.988 (0.983-0.993)\n",
      "BIGEMINY\t0.997 (0.991-1.002)\n",
      "EAR     \t0.913 (0.889-0.937)\n",
      "IVR     \t0.995 (0.989-1.002)\n",
      "JUNCTIONAL\t0.987 (0.980-0.993)\n",
      "NOISE   \t0.981 (0.973-0.989)\n",
      "SINUS   \t0.975 (0.971-0.979)\n",
      "SVT     \t0.973 (0.960-0.985)\n",
      "TRIGEMINY\t0.998 (0.995-1.002)\n",
      "VT      \t0.995 (0.980-1.009)\n",
      "WENCKEBACH\t0.978 (0.967-0.989)\n",
      "Average\t\t0.978\n"
     ]
    }
   ],
   "source": [
    "print \"Sequence level AUC\"\n",
    "print_aucs(roc_auc, committee_labels, probs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Set level AUC\n",
      "\t        AUC\n",
      "AF      \t0.965 (0.932-0.998)\n",
      "AVB     \t0.981 (0.953-1.008)\n",
      "BIGEMINY\t0.996 (0.976-1.015)\n",
      "EAR     \t0.940 (0.870-1.009)\n",
      "IVR     \t0.987 (0.959-1.014)\n",
      "JUNCTIONAL\t0.979 (0.946-1.012)\n",
      "NOISE   \t0.947 (0.898-0.996)\n",
      "SINUS   \t0.987 (0.976-0.998)\n",
      "SVT     \t0.953 (0.903-1.003)\n",
      "TRIGEMINY\t0.997 (0.979-1.015)\n",
      "VT      \t0.980 (0.934-1.027)\n",
      "WENCKEBACH\t0.977 (0.938-1.015)\n",
      "Average\t\t0.977\n"
     ]
    }
   ],
   "source": [
    "print \"Set level AUC\"\n",
    "print_aucs(roc_auc_set, committee_labels, probs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_confusions(cm, xlabel, filename):\n",
    "    cm = sklearn.preprocessing.normalize(cm, norm='l1', axis=1, copy=True)\n",
    "    classes = preproc.classes\n",
    "    matplotlib.rcParams['figure.figsize'] = (8, 7)\n",
    "    plt.pcolor(np.flipud(cm), cmap=\"Blues\")\n",
    "    cbar = plt.colorbar()\n",
    "    cbar.ax.tick_params(labelsize=16) \n",
    "    tick_marks = np.arange(len(classes))\n",
    "    plt.xticks(tick_marks + .5, classes, rotation=90, fontsize=16)\n",
    "    plt.yticks(tick_marks + .5, reversed(classes), fontsize=16)\n",
    "    plt.clim(0, 1)\n",
    "    plt.ylabel(\"Committee consensus label\", fontsize=16)\n",
    "    plt.xlabel(xlabel, fontsize=16)\n",
    "    plt.tight_layout()\n",
    "    plt.savefig(filename,\n",
    "                dpi=400,\n",
    "                format='pdf',\n",
    "                bbox_inches='tight')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x504 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cm = skm.confusion_matrix(np.argmax(committee_labels, axis=2).ravel(),\n",
    "                      np.argmax(probs, axis=2).ravel())\n",
    "plot_confusions(cm, \"DNN predicted label\", \"model_confusions.pdf\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x504 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "h_cm = skm.confusion_matrix(np.argmax(rep_comm, axis=2).ravel(), np.argmax(rev_labels, axis=2).ravel())\n",
    "plot_confusions(h_cm, \"Average cardiologist label\", \"human_confusions.pdf\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "vt_class_idx = preproc.class_to_int[\"VT\"]\n",
    "vt_idx = np.where(np.any(np.argmax(committee_labels, axis=2) == vt_class_idx, axis=1))[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_vt_idx = np.where(np.any(np.argmax(probs, axis=2) == vt_class_idx, axis=1))[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0 0 0 0 0 0 0 4 4 4 4 4 4 4 4 0 0 0 0 0 0 0 0] [ 0  0  0  0  0  0  0  0 10 10  0 10 10 10 10  0  0  0  0  0  0  0  0]\n",
      "[7 7 7 7 7 7 7 4 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7 10 10  4  4  4  7  7  7  7  7  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 4 4 4 4 7 7 7 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7  4  4  4  4 10 10  7  7  7  7  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 7 7 4 4 6 6 6 6 4 4 4 4 4 4 4] [ 7  7  7  7  7  7  7  7  7  7 10  6  6  6  6  6  4  4  4  4  5  5  5]\n",
      "[7 7 7 7 7 7 7 7 4 4 4 4 4 4 7 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7  7 10 10 10 10 10 10  7  7  7  7  7  7  7  7  7]\n",
      "[5 5 5 5 5 5 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5] [ 7  7  7  7  7  7 10 10 10 10 10 10 10 10 10 10  4  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 7 7 7 4 4 7 7 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  2  2  7  7 10 10 10  7  7  7  7  7  7  2  2  2  2]\n",
      "[0 0 0 0 0 0 4 4 4 0 0 0 4 4 4 0 0 0 0 0 0 0 0] [ 0  0  0  0  0  0  0 10  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0]\n",
      "[5 5 5 5 5 5 5 5 5 5 5 5 7 7 7 7 5 5 5 5 5 7 7] [ 5  7  4  4  5  5  7 10 10  4  7  7  7  7  7  7  7  4  4  7  7  7  7]\n",
      "[5 5 5 5 5 5 5 5 5 0 0 0 0 0 0 5 5 5 5 5 5 5 5] [ 0  0  0  0  0  0  0  0  0 10 10 10 10 10 10  7  0  0  0  0  0  0  0]\n",
      "[7 2 2 2 2 2 2 2 2 2 2 4 4 4 2 2 7 7 7 7 7 7 7] [ 2  2  2  2  2  2  2  2  2  2 10 10 10 10  7  7  7  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 7 8 8 8 8 8 7 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7  7  7  7  8 10 10 10  7  7  7  7  7  7  7  7  7]\n",
      "[2 2 2 2 2 2 2 2 2 7 8 8 8 8 7 9 9 9 9 9 7 7 7] [ 2  2  2  2  2  2  2  2  2  7  8 10 10 10  7  7  9  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 7 7 4 4 4 7 7 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7  7  7  7 10 10 10  7  7  7  7  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7  7  8  8  8  8 10  8  8  7  7  7  7  7  7  7  7]\n",
      "[7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8] [ 7  7  7  7  7  7  7  7  7  7 10 10 10 10 10  8  8  8  8  8  8  8  8]\n",
      "[7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 7 7 7 7 7 7 7 7] [ 7  7  7  7  7  7  7  7  7 10 10 10 10 10 10  7  7  7  7  7  7  7  7]\n"
     ]
    }
   ],
   "source": [
    "missed = list(set(model_vt_idx).difference(set(vt_idx)))\n",
    "for m in missed:\n",
    "    print np.argmax(committee_labels, axis=2)[m, :], np.argmax(probs,axis=2)[m,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0: u'AF', 1: u'AVB', 2: u'BIGEMINY', 3: u'EAR', 4: u'IVR', 5: u'JUNCTIONAL', 6: u'NOISE', 7: u'SINUS', 8: u'SVT', 9: u'TRIGEMINY', 10: u'VT', 11: u'WENCKEBACH'}\n"
     ]
    }
   ],
   "source": [
    "print preproc.int_to_class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "10 IVR, 3 SVT, 3 AFIB, 1 JUNCTIONAL\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
